/* 
	Uni 全局方法拦截， 用于IOS监听发起授权逻辑
 */
export default (iosInterceptorMethodsList = []) => {
	if (plus.os.name == "Android") {
		return
	}

	const interceptorList = iosInterceptorMethodsList || [];

	const defaultIosInterceptorMethodsList = [{
			method: 'chooseImage',
			authorizeKeys: ['albumAuthorized', 'cameraAuthorized'], // 相册、相机
			tipsTitle: '相机和相册权限申请说明',
			tipsContent: '应用需要访问您的相机和相册，以便进行拍摄、扫描二维码或存取多媒体文件。'
		}, {
			method: 'saveImageToPhotosAlbum',
			authorizeKeys: ['albumAuthorized'], // 相册
			tipsTitle: '相册权限申请说明',
			tipsContent: '应用需要访问您的相册，以便存取照片、视频等多媒体文件。'
		}, {
			method: 'chooseVideo',
			authorizeKeys: ['albumAuthorized', 'cameraAuthorized'], // 相册、相机
			tipsTitle: '相机和相册权限申请说明',
			tipsContent: '应用需要访问您的相机和相册，以便进行拍摄、扫描二维码或存取多媒体文件。'
		}, {
			method: 'chooseMedia',
			authorizeKeys: ['albumAuthorized', 'cameraAuthorized'], // 相册、相机
			tipsTitle: '相机和相册权限申请说明',
			tipsContent: '应用需要访问您的相机和相册，以便进行拍摄、扫描二维码或存取多媒体文件。'
		}, {
			method: 'saveVideoToPhotosAlbum',
			authorizeKeys: ['albumAuthorized'], // 相册
			tipsTitle: '相册权限申请说明',
			tipsContent: '应用需要访问您的相册，以便存取照片、视频等多媒体文件。'
		},
		{
			method: 'createCameraContext',
			authorizeKeys: ['cameraAuthorized'], //摄像头
			tipsTitle: '相机权限申请说明',
			tipsContent: '应用需要访问您的相机，以便拍摄照片、视频或扫描二维码。'
		},
		{
			method: 'scanCode',
			authorizeKeys: ['cameraAuthorized'], //摄像头
			tipsTitle: '相机权限申请说明',
			tipsContent: '应用需要访问您的相机，以便拍摄照片、视频或扫描二维码。'
		},
		{
			methods: 'getLocation',
			authorizeKeys: ['locationAuthorized'], // 位置
			tipsTitle: '定位权限申请说明',
			tipsContent: '应用需要获取您的位置信息，以便提供导航或判断位置等服务。'
		},
		{
			methods: 'chooseLocation',
			authorizeKeys: ['locationAuthorized'], // 位置
			tipsTitle: '定位权限申请说明',
			tipsContent: '应用需要获取您的位置信息，以便提供导航或判断位置等服务。'
		},
		{
			methods: 'openLocation',
			authorizeKeys: ['locationAuthorized'], // 位置
			tipsTitle: '定位权限申请说明',
			tipsContent: '应用需要获取您的位置信息，以便提供导航或判断位置等服务。'
		},
		{
			methods: 'createMapContext',
			authorizeKeys: ['locationAuthorized'], // 位置
			tipsTitle: '定位权限申请说明',
			tipsContent: '应用需要获取您的位置信息，以便提供导航或判断位置等服务。'
		},
		{
			method: 'getRecorderManager',
			authorizeKeys: ['microphoneAuthorized'], //麦克风
			tipsTitle: '麦克风权限申请说明',
			tipsContent: '应用需要访问麦克风，以便进行语音输入或语音通话。'
		}
	]

	defaultIosInterceptorMethodsList.forEach(ditem => {
		if (!interceptorList.some(item => item.method == ditem.method)) {
			interceptorList.push(ditem)
		}
	})

	interceptorList.forEach(item => {
		uni.addInterceptor(item.method, {
			invoke() {
				// 拦截前触发
				const appAuthorizeSetting = uni.getAppAuthorizeSetting();
				const authorizeKeys = item.authorizeKeys;
				// 被拒绝，给出额外引导提示
				if (authorizeKeys.some(key => appAuthorizeSetting[key] === 'denied')) {
					uni.showModal({
						title: item.tipsTitle,
						content: `${item.tipsContent}现在还没有该权限，立即去设置开启？`,
						cancelText: "取消",
						confirmText: "去设置",
						showCancel: true,
						confirmColor: '#3AB1A6',
						cancelColor: '#666',
						success: (res) => {
							if (res.confirm) {
								//跳转手机系统设置
								uni.openAppAuthorizeSetting()
							}
						}
					})
				}
			}
		})
	})
}